﻿using Seg.Entidades;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Seg.Datos
{
    public class OficinaDatos
    {
        BD_SEGEntities context = new BD_SEGEntities();

        public List<Oficina> Listar(string nombre,decimal pais, string anulado)
        {
            var datos = new List<Seg.Entidades.Oficina>();

            if (anulado == "0")
            {
                datos = context.Oficina.Where(x =>
                    ((x.Nombre.Contains(nombre) || nombre == "")
                    && (x.CodigoPais == pais || pais == 0))
                ).ToList();
            }
            else
            {
                var anul = anulado == "A" ? false : true;
                datos = context.Oficina.Where(x =>
                    ((x.Nombre.Contains(nombre) || nombre == "")
                    && (x.CodigoPais == pais || pais == 0)
                    && (x.Anulado == anul))
                ).ToList();
            }
            return datos;
        }
        public int Insertar(Oficina entidad)
        {
            entidad.CodigoOficina = GenerarCodigo();
            entidad.FechaCreacion = DateTime.Today;
            entidad.CodigoTipoOficina = 0;

            context.Oficina.Add(entidad);
            context.SaveChanges();
            return 1;
        }
        public int Actualizar(Oficina entidad)
        {
            var objUpd = context.Oficina.Where(x => x.CodigoOficina == entidad.CodigoOficina).FirstOrDefault();

            objUpd.Nombre = entidad.Nombre;
            objUpd.Descripcion = entidad.Descripcion;
            objUpd.CodigoPais = entidad.CodigoPais;
            objUpd.Anulado = entidad.Anulado;
            objUpd.FechaModificacion = DateTime.Today;

            context.SaveChanges();
            return 1;
        }
        public int Eliminar(int id)
        {
            var objUpd = context.Oficina.Where(x => x.CodigoOficina == id).FirstOrDefault();
            objUpd.Anulado = true;
            var r = context.SaveChanges();
            return r;
        }
        public Oficina ObtenerOficina(decimal id)
        {
            var datos = context.Oficina.Where(x => x.CodigoOficina == id).FirstOrDefault();
            return datos;
        }
        int GenerarCodigo()
        {
            var actual = context.Oficina.Max(x => x.CodigoOficina);
            return actual + 1;
        }
        public List<Oficina> ListarXUbicacion(int CodigoUbicacion)
        {
            var datos = new List<Seg.Entidades.Oficina>();

            datos = context.Oficina.Where(x =>
                ((x.CodigoUbicacion == CodigoUbicacion)
                && (x.Anulado == false))
                ).ToList();
            return datos;
        }
    }
}
